package com.xoa.controller.equipment;


import com.xoa.model.equipment.EquipType;
import com.xoa.service.equipment.EquipTypeService;
import com.xoa.util.LimsJson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
* 创建作者:   刘欢
* 创建日期:   10:32 2019/7/18
* 类介绍:     这个类是一个对设备类型的ciud等操作，
* 参数说明:   * @param null
* @return
*/


@Controller
@RequestMapping("/equipmentType")
public class EquipmentTypeController {
    @Autowired
    private EquipTypeService equipTypeService;
    //跳转页面
    @RequestMapping("/indexList")
    public String indexList(){
        return "/app/equipment/euqipmentType/equipType";
    }

    @RequestMapping("/addList")
    public String addList(){return "/app/equipment/equipmentAccount/index";}

    @RequestMapping("/editList")
    public String editList(){return "/app/equipment/equipmentAccount/index";}

    @RequestMapping("/map")
    public String map(){return "/app/lims/map/map";}

    /**
    * 创建作者:   庞君
    * 创建日期:   18:30 2019/12/11
    * 方法介绍:   下拉树拖拽
    * 参数说明:   No such property: code for class: Script1
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */
     @RequestMapping("changeEquipmentType")
     @ResponseBody
     public LimsJson<EquipType> changeEquipmentType(Integer id, Integer pid, Integer sort, Integer mid){
            return equipTypeService.changeEquipmentType(id,pid,sort,mid);
     }
    /*
    * 创建作者:   刘欢
    * 创建日期:   14:58 2019/7/18
    * 方法介绍:   查询所有的设备类型
    * 参数说明:   * @param null
    * @return
    */


    @RequestMapping("/showAllEquipmentType")
    @ResponseBody
    public LimsJson<EquipType> showAllEquipmentType(HttpServletRequest request,Integer page,Integer pageSize,Boolean userFlag){
        return equipTypeService.showAllEquipmentType(request,page,pageSize,userFlag);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:53 2019/7/18
    * 方法介绍:   查询一级父类
    * 参数说明:   * @param request
    * @param equipTypeId
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/showParentEquipmentType")
    @ResponseBody
    public LimsJson<EquipType> showParentEquipmentType(HttpServletRequest request,Integer equipTypeId,String result){
        return equipTypeService.showParentEquipmentType(request,result);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:53 2019/7/18
    * 方法介绍:   查询一级下的所有子集，或者子集的子集
    * 参数说明:   * @param request
    * @param equipTypeId
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/showChildEquipmentType")
    @ResponseBody
    public LimsJson<EquipType> showChildEquipmentType(HttpServletRequest request,Integer equipTypeId,String result){
        return equipTypeService.showChildEquipmentType(request,equipTypeId,result);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:53 2019/7/18
    * 方法介绍:     根据id查询对应的类型，用作数据回显或者其它均可
    * 参数说明:   * @param request
    * @param equipTypeId
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/showEquipmentTypeById")
    @ResponseBody
    public LimsJson<EquipType> showEquipmentTypeById(HttpServletRequest request,Integer equipTypeId,String typeCode){
        return equipTypeService.showEquipmentTypeById(request,equipTypeId,typeCode);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:55 2019/7/18
    * 方法介绍:   添加一个父类，如果equipTypeId不为null，添加一个同级别类型，如果为null添加一个一级父类
    * 参数说明:   * @param request
    *
    * @param equipType
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/addParentEquipmentType")
    @ResponseBody
    public LimsJson<EquipType> addParentEquipmentType(HttpServletRequest request,EquipType equipType){
        return equipTypeService.addParentEquipmentType(request,equipType);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:56 2019/7/18
    * 方法介绍:   点击添加它的子类
    * 参数说明:   * @param request
    * @param equipTypeId
    * @param equipType
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/addChildEquipmentType")
    @ResponseBody
    public LimsJson<EquipType> addChildEquipmentType(HttpServletRequest request,Integer equipTypeId,EquipType equipType){
        return equipTypeService.addChildEquipmentType(request,equipTypeId,equipType);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:56 2019/7/18
    * 方法介绍:   根据主键修改本条数据
    * 参数说明:   * @param request
    * @param equipType
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/editEquipmentType")
    @ResponseBody
    public LimsJson<EquipType> editEquipmentType(HttpServletRequest request,String equipType){
        return equipTypeService.editEquipmentType(request,equipType);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:57 2019/7/18
    * 方法介绍:   主键删除单条
    * 参数说明:   * @param request
    * @param equipTypeId
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/deleteEquipmentTypeById")
    @ResponseBody
    public LimsJson<EquipType> deleteEquipmentTypeById(HttpServletRequest request,Integer equipTypeId){
        return equipTypeService.deleteEquipmentTypeById(request,equipTypeId);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   17:57 2019/7/18
    * 方法介绍:   主键删除多条
    * 参数说明:   * @param request
    * @param equipTypeIds
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */


    @RequestMapping("/deleteArrayEquipmentTypeById")
    @ResponseBody
    public LimsJson<EquipType> deleteArrayEquipmentTypeById(HttpServletRequest request,String equipTypeIds){
        return equipTypeService.deleteArrayEquipmentTypeById(request,equipTypeIds);
    }


    /**
    * 创建作者:   刘欢
    * 创建日期:   16:38 2019/7/22
    * 方法介绍:   设备类型中同步能力项
    * 参数说明:   * @param request
    * @param equipTypeId 设备类型id
    * @param equipCapyIds 设备类型中的能力项id串
    * @return     com.xoa.util.lims.LimsJson<java.lang.Object>
    */


    @RequestMapping("/togetherCapy")
    @ResponseBody
    public LimsJson<Object> togetherCapy(HttpServletRequest request,Integer equipTypeId ,String equipCapyIds){
        return equipTypeService.togetherCapy(request,equipTypeId,equipCapyIds);
    }



    /**
    * 创建作者:   刘欢
    * 创建日期:   9:48 2019/7/23
    * 方法介绍:   设备类型下拉选择
    * 参数说明:   * @param request
    * @return     java.util.List<java.util.Map<java.lang.Object,java.lang.Object>>
    */


    @RequestMapping("/selectNameAndId")
    @ResponseBody
    public List<Map<Object,Object>> selectNameAndId(HttpServletRequest request ){
        return equipTypeService.selectNameAndId(request);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   13:14 2019/7/29
    * 方法介绍:   拖拽排序，改变子父类
    * 参数说明:   * @param equipTypeId1
    * @param equipTypeId2
    * @return     com.xoa.util.lims.LimsJson<java.lang.Object>
    */


    @RequestMapping("/changeSort")
    @ResponseBody
    public LimsJson<Object> changeSort(Integer equipTypeId1,Integer equipTypeId2){
        return equipTypeService.changeSort(equipTypeId1,equipTypeId2);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   18:00 2019/7/30
    * 方法介绍:   添加设备类型接口
    * 参数说明:   * @param request
    * @param pId 选中节点的父类id
    * @param id 选中节点的id
    * @param label 新增的类型的name
    * @param type 一个判断新增加位置的flag
    * @param sort 选中节点的排序号
    * @return     com.xoa.util.lims.LimsJson<java.lang.Object>
    */

    @RequestMapping("/addEquipType")
    @ResponseBody
    public LimsJson<Object> addEquipType(HttpServletRequest request,Integer pId,Integer id,
                                         String label,int type,Integer sort){

        return equipTypeService.addEquipType(request,pId,id,label,type,sort);
    }


    /**
    * 创建作者:   刘欢
    * 创建日期:   18:32 2019/7/31
    * 方法介绍:   设备编辑能力项确认
    * 参数说明:   * @param equuipTypeCapyIds
    * @param equipTypeId
    * @return     java.util.Map<java.lang.String,java.lang.Object>
    */


    @RequestMapping("/addEquipTypeCapyByTypeId")
    @ResponseBody
    public Map<String,Object>addEquipTypeCapyByTypeId(String equuipTypeCapyIds,Integer equipTypeId){
        return equipTypeService.addEquipTypeCapyByTypeId(equuipTypeCapyIds,equipTypeId);
    }


    /**
    * 创建作者:   刘欢
    * 创建日期:   10:17 2019/8/10
    * 方法介绍:   下拉树
    * 参数说明:   * @param
    * @return     com.xoa.util.lims.LimsJson
    */

    @ResponseBody
    @RequestMapping("/selectEquipTypeTree")
    public List selectTree(){
        return equipTypeService.selectTree();
    }




    /** 创建作者:   王穗穗
    * 创建日期:   10:21 2019/9/16
    * 方法介绍:   添加/编辑 类型编码编码，
    * 参数说明:   [equipTypeId, code]
    * @return     com.xoa.util.lims.LimsJson
    */
    @ResponseBody
    @RequestMapping("/updateCode")
    public LimsJson updateCode(HttpServletRequest request,Integer equipTypeId,String code,Integer pId){
        return equipTypeService.updateCode(request,equipTypeId, code,pId);
    }
    /**
    * 创建作者:   庞君
    * 创建日期:   14:57 2019/12/18
    * 方法介绍:   设备类型展示设备能力
    * 参数说明:   No such property: code for class: Script1
    * @return     com.xoa.util.lims.LimsJson<com.xoa.lims.equipment.model.EquipType>
    */
    @ResponseBody
    @RequestMapping("/showEquipType")
    public LimsJson<EquipType> showEquipType(HttpServletRequest request, Integer equipTypeId,String typeCode){
        return equipTypeService.showEquipType(request,equipTypeId,typeCode);
    }
    /**
     * 创建作者:   王辰
     * 创建日期:   2020/07/23
     * 方法介绍:   设备类型右侧添加
     * 参数说明:
     * @return
     */
    @ResponseBody
    @RequestMapping("/addEquType")
    public LimsJson saveEquipType(String json, Integer pid){
        return equipTypeService.saveEquipType(json, pid);
    }
}
